1. Technical Field
The present invention relates generally to data processing systems and more particularly to storage devices and storage systems. Still more specifically, the present invention provides a translation device driver for translating between disk device driver commands and tape device driver commands in order to provide a block addressable virtual tape storage system that permits direct access and update-in-place access to its data.
2. Description of Related Art
Tapes store data sequentially from the beginning of the tape to the end of the tape. A computer system cannot modify data stored in the middle of the data stored on the tape. A tape drive is an append-only storage system. Thus, data can be appended to the end of the data currently stored on the tape. Data stored in the middle of the data on a tape can be modified, but in this case, all of the data stored after the modified data will be invalidated. Therefore, data cannot be modified in the middle the tape and have the data located after the modified data remain usable. When data is replaced in the middle of the tape, all data on the tape located after the replaced data is invalidated.
Conversely, a disk drive storage system allows data to be updated in place. Thus, in a disk drive system, a block on the disk can be modified without invalidating other data stored on the disk drive.
Applications may be written assuming that the storage media the application will be using will be a storage system that permits direct access reads and writes as well as update-in-place. Disk drive storage systems permit direct access reads and writes as well as update-in-place. When an application attempts to access a disk drive storage system, the application makes a call to a file system in order to translate logical disk locations to physical disk locations. The file system is used to convert a request to access data at a logical disk location into a request to access the actual physical disk location where the requested data is physically stored.
A file system is a data structure that includes the names of files as well as the information needed to locate and access these files. The file system can be accessed directly, or randomly, for read and write operations. Furthermore, the file system supports update-in-place operations for each one of its blocks such that a write operation intended to update or replace the content of any block does not affect the content of any other block in the data structure.
The backing storage for this data structure must be a virtual or physical block storage device that supports direct access, i.e. random access, read, write, and update-in-place operations. Disk storage devices support these backing storage requirements and are typically used as devices to store a file system.
While tape storage is directly, i.e. randomly, accessible for reading and writing, there are no virtual tape storage devices that support an update-in-place capability. Virtual tape systems are known in the art. These systems are designed to operate using the same update rules as those used by physical tape storage systems or devices. Physical tape storage systems or devices do not support update-in-place data modification. Thus, known virtual tape systems do not permit update-in-place data modification.
Tape storage devices are unsuitable for storing a file system. Physical tape devices do not support update-in-place because of the inherent physical limitations of magnetic tape recording technology. All of the virtual tape implementations preserve the features and limitations of the physical tape drives and thus do not support update-in-place capability.
An attempt to rewrite or update a virtual or physical tape record location beyond the updated or rewritten record is not permitted because the data located after the updated or rewritten record is invalid after the update. This violates the update-in-place requirement for a file system data structure.
FIG. 1 is a block diagram of a data processing system 100 that uses a disk-based file system 102 to access a disk drive 104 through a disk driver 106 in accordance with the prior art. Individual independent blocks of data are stored on disk drive 104. Each block can be accessed and/or modified independently from all of the other blocks that are stored on disk drive 104. Disk drive access requests are sent to disk driver 106 which then forwards them to disk drive 104.
For example, as depicted by FIG. 1, a write command has been issued to write data to block 2000, and a write command has been issued to write data to block 504. When the data is written into these blocks, only these blocks are modified. Thus, when data is written to block 2000, only block 2000 is modified. The remaining blocks of data on disk drive 104 remain valid and unchanged.
In addition, FIG. 1 also illustrates a read command that has been issued to read data from block 77, a read command that has been issued to read data from block 241, and a read command that has been issued to read data from block 19.
Data can be read from and written to individual blocks in disk drive 104 without affecting the other blocks. For example, when the data in block 156 is modified, the remaining blocks are not affected. They remain valid regardless of where these blocks are located with respect to each other in disk drive 104.
FIG. 2 is a block diagram of a data processing system 200 that includes a tape application 202 that accesses a tape drive 204 through a tape driver 206 in accordance with the prior art.
Tape application 202 issues requests to access tape drive 204 first to tape driver 206 which then forwards the requests to tape drive 204. Data is stored in records on tape media 208 that is included within tape drive 204. When a particular record is to be accessed, tape media 208 must first be physically positioned to that record. When a record is to be read, tape media 208 is wound and rewound until that record is reached on tape media 208. The data can then be read from the record and transmitted from tape drive 204 back to tape driver 206.
Additional data can be stored in tape drive 204 by appending additional records to the end of the data that is already stored on tape media 208. Existing data that is already stored on tape media 208 can also be modified. When existing data is to be modified, tape media 208 is wound and rewound until the record that includes that data is reached on tape media 208. The new data can then be written to that record. In this case, all of the data that is stored on the tape after the modified record is invalidated.
For example, FIG. 2 illustrates reading a record, such as record 54, from tape media 208. When a record, such as record 54, is read, the data on tape media 208 is not affected. It remains valid. When a record, such as new record 58 is appended to the end of the existing records, the existing records are not affected. They remain valid. If, however, an existing record, such as record 55, is modified, the remaining records that are located after the modified record are invalidated. In this case, if record 55 is modified, records 56-58 are invalidated.
A file system generates a read/write command in a disk drive based format. Because the file system assumes that it is accessing a disk drive, the read/write commands are in a disk drive format. These commands are then transmitted to the disk driver as described above which then forwards the commands to the disk drive. When a tape application issues read/write commands, those commands are in a tape drive based format since the tape application assumes that it is accessing a tape drive. Thus, it is not known to replace a disk drive system with a tape drive system such that a file system is able to issue disk drive based commands that are used to access a tape drive system that is capable of processing only tape drive based commands.
Therefore, a need exists for a method and system that provides a translation device driver for translating between disk device driver commands and tape device driver commands in order to provide a block addressable virtual tape storage system that permits direct access and update-in-place access to its data.